package com.jeesite.modules.ocr.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeesite.common.entity.Page;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.ocr.entity.OcrTemplate;
import com.jeesite.modules.ocr.dao.OcrTemplateDao;
import com.jeesite.modules.file.utils.FileUploadUtils;
import com.jeesite.modules.ocr.entity.OcrTempateConfigs;
import com.jeesite.modules.ocr.dao.OcrTempateConfigsDao;

/**
 * 模板管理Service
 * @author 姚海陆,长春叭哥
 * @version 2024-07-29
 */
@Service
public class OcrTemplateService extends CrudService<OcrTemplateDao, OcrTemplate> {
	
	@Autowired
	private OcrTempateConfigsDao ocrTempateConfigsDao;
	
	/**
	 * 获取单条数据
	 * @param ocrTemplate
	 * @return
	 */
	@Override
	public OcrTemplate get(OcrTemplate ocrTemplate) {
		OcrTemplate entity = super.get(ocrTemplate);
		if (entity != null){
			OcrTempateConfigs ocrTempateConfigs = new OcrTempateConfigs(entity);
			ocrTempateConfigs.setStatus(OcrTempateConfigs.STATUS_NORMAL);
			entity.setOcrTempateConfigsList(ocrTempateConfigsDao.findList(ocrTempateConfigs));
		}
		return entity;
	}
	
	/**
	 * 查询分页数据
	 * @param ocrTemplate 查询条件
	 * @param ocrTemplate page 分页对象
	 * @return
	 */
	@Override
	public Page<OcrTemplate> findPage(OcrTemplate ocrTemplate) {
		return super.findPage(ocrTemplate);
	}
	
	/**
	 * 查询列表数据
	 * @param ocrTemplate
	 * @return
	 */
	@Override
	public List<OcrTemplate> findList(OcrTemplate ocrTemplate) {
		return super.findList(ocrTemplate);
	}
	
	/**
	 * 查询子表分页数据
	 * @param ocrTempateConfigs
	 * @param ocrTempateConfigs page 分页对象
	 * @return
	 */
	public Page<OcrTempateConfigs> findSubPage(OcrTempateConfigs ocrTempateConfigs) {
		Page<OcrTempateConfigs> page = ocrTempateConfigs.getPage();
		page.setList(ocrTempateConfigsDao.findList(ocrTempateConfigs));
		return page;
	}
	
	/**
	 * 保存数据（插入或更新）
	 * @param ocrTemplate
	 */
	@Override
	@Transactional
	public void save(OcrTemplate ocrTemplate) {
		super.save(ocrTemplate);
		// 保存上传图片
		FileUploadUtils.saveFileUpload(ocrTemplate, ocrTemplate.getId(), "ocrTemplate_image");
		// 保存上传附件
		FileUploadUtils.saveFileUpload(ocrTemplate, ocrTemplate.getId(), "ocrTemplate_file");
		// 保存 OcrTemplate子表
		for (OcrTempateConfigs ocrTempateConfigs : ocrTemplate.getOcrTempateConfigsList()){
			if (!OcrTempateConfigs.STATUS_DELETE.equals(ocrTempateConfigs.getStatus())){
				ocrTempateConfigs.setOcrTemplateId(ocrTemplate);
				if (ocrTempateConfigs.getIsNewRecord()){
					ocrTempateConfigsDao.insert(ocrTempateConfigs);
				}else{
					ocrTempateConfigsDao.update(ocrTempateConfigs);
				}
			}else{
				ocrTempateConfigsDao.delete(ocrTempateConfigs);
			}
		}
	}
	
	/**
	 * 更新状态
	 * @param ocrTemplate
	 */
	@Override
	@Transactional
	public void updateStatus(OcrTemplate ocrTemplate) {
		super.updateStatus(ocrTemplate);
	}
	
	/**
	 * 删除数据
	 * @param ocrTemplate
	 */
	@Override
	@Transactional
	public void delete(OcrTemplate ocrTemplate) {
		super.delete(ocrTemplate);
		OcrTempateConfigs ocrTempateConfigs = new OcrTempateConfigs();
		ocrTempateConfigs.setOcrTemplateId(ocrTemplate);
		ocrTempateConfigsDao.deleteByEntity(ocrTempateConfigs);
	}
	
}